﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Spring.Context;
using Spring.Context.Support;
using GRUPO_4.Negocio;
using GRUPO_4.Dominio;

namespace GRUPO_4.Pruebas
{
    [TestFixture]
    public class TestInscripcionesPostulanteService
    {
        private IApplicationContext contexto = null;

        [TestFixtureSetUp]
        public void InicializarSpring()
        {
            this.contexto = new XmlApplicationContext(
                "assembly://GRUPO-4/GRUPO_4/CapaNegocio.xml",
                "assembly://GRUPO-4/GRUPO_4/CapaPersistencia.xml");
        }

        [Test]
        public void TestRealizarInscripcionPostulanteCorrectamente()
        {
            InscripcionPostulanteService inscripcionPostulanteService = (InscripcionPostulanteService)this.contexto.GetObject("inscripcionPostulanteService");
            Assert.NotNull(inscripcionPostulanteService);
            InscripcionesPostulante InscripcionRealizada = null;
            Assert.DoesNotThrow(delegate
            {
                InscripcionesPostulante inscripcionNueva = new InscripcionesPostulante();
                inscripcionNueva.idInscripciones = 2238543;
                inscripcionNueva.presentacionPostulante = "Fulb";
                inscripcionNueva.codEmpresa = 33;
                inscripcionNueva.codPostulante = 1;
                inscripcionNueva.idOfertaLaboral = 23;

                InscripcionRealizada = inscripcionPostulanteService.crearInscripcionesPostulante(inscripcionNueva);
            });

            Assert.NotNull(InscripcionRealizada);
            Assert.Greater(InscripcionRealizada.idInscripciones, 0);
        }

        public void TestEliminarInscripcionPostulante()
        {

            InscripcionPostulanteService inscripcionPostulanteService = (InscripcionPostulanteService)this.contexto.GetObject("inscripcionPostulanteService");
            Assert.NotNull(inscripcionPostulanteService);
            InscripcionesPostulante inscripcionPostulanteExiste = inscripcionPostulanteService.ObtenerInscripcionesPostulante(23);
            InscripcionesPostulante inscripcionPostulanteEliminada = null;
            Assert.DoesNotThrow(delegate
            {
                inscripcionPostulanteService.EliminarInscripcionesPostulante(inscripcionPostulanteExiste);
            });
            Assert.Null(inscripcionPostulanteEliminada);
         }
        [Test]
        public void TestListarInscripcionPostulante()
        {
            InscripcionPostulanteService inscripcionPostulanteService = (InscripcionPostulanteService)this.contexto.GetObject("inscripcionPostulanteService");
            Assert.NotNull(inscripcionPostulanteService);
            ICollection<InscripcionesPostulante> listaInscripcionPostulante = null;
            Assert.DoesNotThrow(delegate
            {
                listaInscripcionPostulante = inscripcionPostulanteService.ListarTodoslasInscripcionesPostulante();
            });
            
            Console.WriteLine(listaInscripcionPostulante.Count);
            Assert.Greater(listaInscripcionPostulante.Count, 0);
            foreach (InscripcionesPostulante Ofer in listaInscripcionPostulante)
            {
                Console.WriteLine(Ofer.idInscripciones + "|" + Ofer.fecInscripcion + "|" + Ofer.ganador + "|" + Ofer.presentacionPostulante + "|" + Ofer.codPostulante + "|" + Ofer.codEmpresa + "|" + Ofer.idOfertaLaboral);
            }
        }
        [Test]
        public void TestConsultarInscripcionPostulante()
        {
            InscripcionPostulanteService inscripcionPostulanteService = (InscripcionPostulanteService)this.contexto.GetObject("inscripcionPostulanteService");
            Assert.NotNull(inscripcionPostulanteService);
            InscripcionesPostulante inscripcionPostulanteConsultada = null;
            
            inscripcionPostulanteConsultada = inscripcionPostulanteService.ObtenerInscripcionesPostulante(123);
            
            Assert.NotNull(inscripcionPostulanteConsultada);
        }

    }
}